﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MMSA.Services.SharedServices;
using SmartProcess.Core.Commons.Tracing;


namespace MMSA.Services.Services
{
    public class PricesManagementService : IDataManagementService
    {
        private TracingService tracing = new TracingService("MMSA.Services");
        string traceServicio = string.Empty;
        public void MassiveProductUpload(string fileName, string fileExtension)
        {
            try
            {
                var dataTable = new DataTable("PED_LISTA_PRECIOS");

                traceServicio = "Antes de cargar desde archivo excel: " + fileName;

                dataTable.GetDataFromExcelSpreadsheet(fileName, fileExtension);
                MMSA.Entities.Price.PED_LISTA_PRECIOSDataTable precios = new Entities.Price.PED_LISTA_PRECIOSDataTable();

                traceServicio = "Antes de recorrer las columnas de precios";

                foreach (DataRow item in dataTable.Rows)
                {
                    
                    var row = precios.NewPED_LISTA_PRECIOSRow();
                    for (int i = 0; i < dataTable.Columns.Count; i++)
                    {
                        
                        traceServicio = "Se cayo al leer la Columna: " + dataTable.Columns[i].ColumnName + " ,revise si el archivo subido pertenece al formato correcto.";


                        if (item[dataTable.Columns[i].ColumnName].Equals("NULL"))
                        {
                            if (dataTable.Columns[i].ColumnName.Equals("lst_precio"))
                            {
                                row[dataTable.Columns[i].ColumnName] = Convert.ChangeType(0,
                            precios.Columns[dataTable.Columns[1].ColumnName].DataType);

                            }
                            else
                            {
                                row[dataTable.Columns[i].ColumnName] = Convert.ChangeType("",
                                precios.Columns[dataTable.Columns[1].ColumnName].DataType);
                            }
                        }
                        else
                        {
                            row[dataTable.Columns[i].ColumnName] = Convert.ChangeType(item[dataTable.Columns[i].ColumnName],
                            precios.Columns[dataTable.Columns[1].ColumnName].DataType);
                            //annualFrequency.Columns[dataTable.Columns[2].ColumnName].DataType);


                        }
                        




                    }
                    precios.AddPED_LISTA_PRECIOSRow(row);
                }
                traceServicio = "Antes de generar el upsert de actualización e inserción.";
                precios.Upsert("pro_id");
            }
            catch (Exception exception)
            {
                if (exception != null)
                    tracing.ErrorFormat("MMSA.Services.Services.PricesManagementService ==> TRACE: {0}, ==> ERROR: {1}, ==> STACKTRACE: {2}", traceServicio, exception.Message, exception.StackTrace);
                throw;
            }
            
        }
    }
}
